package com.linq.cool.common.constants;


import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @Author: yqlin
 * @Date: 2020/12/29 11:02
 * @Description: 用户常量
 * @Version: 1.0.0
 */
public interface UserConstants {
    /**
     * 初始化密码
     */
    String INIT_PASSWORD = "123456";
    /**
     * 第三方角色编码
     */
    String THIRD_ROLE_PERM_CODE = "third_account";

    /**
     * 平台内系统用户的唯一标志
     */
    String SYS_USER = "SYS_USER";

    /**
     * Layout组件标识
     */
    String LAYOUT = "Layout";

    /**
     * 用户名长度限制
     */
    Integer USERNAME_MIN_LENGTH = 2;

    Integer USERNAME_MAX_LENGTH = 20;

    /**
     * 密码长度限制
     */
    Integer PASSWORD_MIN_LENGTH = 5;

    Integer PASSWORD_MAX_LENGTH = 20;

    /**
     * ParentView组件标识
     */
    String PARENT_VIEW = "ParentView";
    /**
     * 名称连接符
     */
    String CONCAT_NAME = " -> ";
    /**
     * 父ic
     */
    Long DEFAULT_PARENT_ID = 0L;
    /**
     * 自动完成时间
     */
    Integer AUTO_FININSH_DAYS = 3;

    /**
     * 根据type获取列名
     * 搜索用
     *
     * @param way
     *
     * @return
     */
    static String getSortField(Integer way) {
        switch (way) {
            case 2:
                return UserConstants.StateEnum.SORT_WAY_2.getDesc();
            case 3:
                return UserConstants.StateEnum.SORT_WAY_3.getDesc();
            default:
                return UserConstants.StateEnum.SORT_WAY_1.getDesc();
        }
    }

    @AllArgsConstructor
    enum StateEnum {
        /**
         * 状态: 正常 停用 删除
         */
        STATUS_NORMAL(0, "正常"),
        STATUS_DISABLE(1, "停用"),

        /***
         * 用户性别: 男 女 未知
         */
        USER_GENDER_MALE(0, "男"),
        USER_GENDER_FEMALE(1, "女"),
        USER_GENDER_UNLIMITED(2, "未知"),
        /**
         * 用户类型: 系统用户 其他用户
         */
        USER_TYPE_SYSTEM(0, "系统用户"),
        USER_TYPE_OTHERS(1, "其他用户"),

        /**
         * 角色数据范围: 全部数据权限 自定数据权限 本部门数据权限 本部门及以下数据权限 仅本人数据权限
         */
        ROLE_DATA_SCOPE_ALL(1, "全部数据权限"),
        ROLE_DATA_SCOPE_CUSTOM(2, "自定数据权限"),
        ROLE_DATA_SCOPE_DEPT(3, "本部门数据权限"),
        ROLE_DATA_SCOPE_DEPT_AND_CHILD(4, "本部门及以下数据权限"),
        ROLE_DATA_SCOPE_SELF(5, "仅本人数据权限"),
        /**
         * 操作类型: 其它 后台用户 手机端用户
         */
        OPERATOR_OTHER(0, "其它"),
        OPERATOR_ADMIN(1, "后台用户"),
        OPERATOR_MOBILE(2, "手机端用户"),
        /**
         * 操作日志记录状态: 正常
         */
        OPERATE_LOG_STATUS_NORMAL(0, "正常"),
        OPERATE_LOG_STATUS_ABNORMAL(1, "异常"),
        /**
         * 通知公告类型: 通知 公告
         */
        NOTICE_TYPE(1, "通知"),
        NOTICE_ANNOUNCEMENT(2, "公告"),
        /**
         * 菜单是否显示: （隐藏）（显示）
         */
        MENU_VISIBLE_HIDE(0, "隐藏"),
        MENU_VISIBLE_DISPLAY(1, "显示"),

        /**
         * 菜单类型: 目录 菜单 按钮
         */
        MENU_TYPE_CATALOG(0, "目录"),
        MENU_TYPE_MENU(1, "菜单"),
        MENU_TYPE_BUTTON(2, "按钮"),


        /**
         * 是否是外链: 内链 外链
         */
        MENU_FRAME_INNER(0, "内链"),
        MENU_FRAME_OUTER(1, "外链"),

        /**
         * 是否缓存: 否 是
         */
        MENU_NOT_CACHE(0, "不缓存"),
        MENU_CACHE(1, "缓存"),

        /**
         * 登录状态:成功
         */
        LOGIN_STATUS_SUCCESS(0, "成功"),
        LOGIN_STATUS_FAIL(1, "失败"),

        /**
         * 参数配置类型: 否 是
         */
        CONFIG_TYPE_NO(0, "否"),
        CONFIG_TYPE_YES(1, "是"),

        /**
         * 业务类型 其它 新增 修改 删除
         */
        BUSINESS_TYPE_OTHERS(0, "其它"),
        BUSINESS_TYPE_ADD(1, "新增"),
        BUSINESS_TYPE_MODIFY(2, "修改"),
        BUSINESS_TYPE_DELETE(3, "删除"),

        /**
         * 删除标志: 存在 已删除
         */
        DELETE_FLAG_EXIST(0, "未删除"),
        DELETE_FLAG_DELETED(1, "已删除"),

        /**
         * 绑定账户状态
         */
        EXISTS_CUSTOMER(1, "绑定已有账户"),
        NEW_CUSTOMER(2, "绑定新账户"),

        LOGIN_TYPE_SYSTEM(1, "后台管理系统"),
        LOGIN_TYPE_WECHAT(2, "微信小程序"),
        LOGIN_TYPE_WEB(3, "网页登录"),
        /**
         * 支付类型
         */
        PAY_TYPE_CASH(0, "现金"),
        PAY_TYPE_ALIPAY(1, "支付宝"),
        PAY_TYPE_WECHAT(2, "微信"),
        /**
         * 支付单状态状态，0未支付  1 支付成功  2支付超时 3支付失败 4:已全额退费 5:已部分退费
         */
        ORDER_STATUS_0(0, "未支付"),
        ORDER_STATUS_1(1, "已支付"),
        ORDER_STATUS_2(2, "支付超时"),
        ORDER_STATUS_3(3, "支付失败"),
        ORDER_STATUS_4(4, "已全额退费"),
        ORDER_STATUS_5(5, "已部分退费"),

        /**
         * 退费单状态，订单状态0未退费  1 退费成功 2 退费失败
         */
        ORDER_REFUND_STATUS_0(0, "未退费"),
        ORDER_REFUND_STATUS_1(1, "退费成功"),
        ORDER_REFUND_STATUS_2(2, "退费失败"),
        /**
         * 0 全额退款 1: 部分退款
         */
        ORDER_REFUND_TYPE_0(0, "全额退款"),
        ORDER_REFUND_TYPE_1(1, "部分退款"),
        /**
         * 分类层级 0 1 2 3
         */
        CATEGORY_LEVEL_0(0, "顶级"),
        CATEGORY_LEVEL_1(1, "一级"),
        CATEGORY_LEVEL_2(2, "二级"),
        CATEGORY_LEVEL_3(3, "三级"),
        /**
         * 是否新品,0否1是
         */
        STAUS_NEW_0(0, "否"),
        STAUS_NEW_1(1, "是"),
        /**
         * 是否上架,0否1是
         */
        STATUS_PUBLISH_0(0, "否"),
        STATUS_PUBLISH_1(1, "是"),
        /**
         * 是否推荐,0否1是
         */
        STATUS_RECOMMEND_0(0, "否"),
        STATUS_RECOMMEND_1(1, "是"),
        /**
         * 是否审核,0 未审核,1 审核,2,不通过
         */
        STATUS_VERIFY_0(0, "未审核"),
        STATUS_VERIFY_1(1, "审核"),
        STATUS_VERIFY_2(2, "不通过"),
        /**
         * 优惠券状态枚举
         */
        COUPON_TYPE_0(0, "全场通用"),
        COUPON_TYPE_1(1, "指定分类"),
        COUPON_TYPE_2(2, "指定商品"),
        /**
         * 优惠券领取状态 使用状态：0: 已过期 1:正常
         */
        COUPON_NORMAL(1, "正常"),
        COUPON_TIMEOUT(0, "已过期"),
        /**
         * 状态: 1  有效 0 无效
         */
        CART_ITEM_STATUS_0(0, "无效"),
        CART_ITEM_STATUS_1(1, "有效"),

        /**
         * 排序标识，1: 综合排序，2: 销量排序，3: 价格排序
         */
        SORT_WAY_1(1, null),
        SORT_WAY_2(2, "sale"),
        SORT_WAY_3(3, "price"),
        /**
         * 排序方式，1:正序 2:倒序
         */
        SORT_TYPE_ASC(1, "正序"),
        SORT_TYPE_DESC(2, "倒序"),
        /**
         * 否显示在导航栏(0 否 1 是)
         */
        NAV_STAUS_0(0, "否"),
        NAVSTAUS_1(1, "是"),
        /**
         * 评论状态
         */
        COMMENT_SIMPLE(1, "普通评价"),
        COMMENT_MCH(2, "商家回复"),
        COMMENT_REVIEW(3, "追评"),
        /**
         * 订单项评价状态 0 否 1 是(已评价)
         */
        ORDER_EVALUATION_STATUS_0(0, "否"),
        ORDER_EVALUATION_STATUS_1(1, "是"),

        ;
        @Getter
        private final Integer code;
        @Getter
        private final String desc;
    }

}
